package com.lkc.util;

import jakarta.mail.*;
import jakarta.mail.internet.InternetAddress;
import jakarta.mail.internet.MimeMessage;

import java.util.Properties;

public class EmailUtil {
    private static final String FROM = "992757787@qq.com";
    private static final String AUTH_CODE = "iwthaleglyxrbbhi";
    private static final String HOST = "smtp.qq.com";
    private static final String PORT = "465";
    private static final Session session;

    static {
        Properties props = new Properties();//是个容器，属性的配置
        // SMTP 主机
        props.put("mail.smtp.host", HOST);
        // SMTP 端口
        props.put("mail.smtp.port", PORT);
        // 是否需要身份验证（用户名/密码）
        props.put("mail.smtp.auth", "true");
        // 启用 SSL（如果使用 465 端口通常需要启用）
        props.put("mail.smtp.ssl.enable", "true");
        // 创建 Session 实例，并传入 Authenticator（用于在发送邮件时提供用户名/授权码）
        session = Session.getInstance(props, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                // 返回认证信息：用户名（发件人邮箱）和授权码（而非登录密码）
                return new PasswordAuthentication(FROM, AUTH_CODE);
            }
        });
        // 开启debug模式
        session.setDebug(true);
    }

    public static void sendEmail(String to, String text) {
        Message message = new MimeMessage(session);

        try {
            // 设置发件人（也可以使用 message.setFrom(...)）
            message.addFrom(new Address[]{new InternetAddress(FROM)});
            // 设置收件人（TO: 直接收件；还可以用 CC、BCC）
            message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
            // 邮件主题
            message.setSubject("多转转管理系统");
            // 设置邮件内容（这里使用 HTML 格式），并指定编码
            message.setContent("<h1 style='color:red'>验证码:" + text + "</h1>", "text/html;charset=utf-8");
            // 发送邮件（静态方法，会使用 session 中的认证信息）
            Transport.send(message);
        } catch (MessagingException e) {
            // 出错时打印堆栈信息
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        sendEmail("992757787@qq.com", "123456");
    }
}
